using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.Contracts;


namespace FoundationLib.Ifc.Rules 
{
	/// <summary>
	/// Provides functionality for checking a business rule
	/// </summary>
	public interface IRule  
	{
		/// <summary>
		/// Gets a name indicating the business rule category
		/// </summary>
		string Category
		{
			get;
		}

		/// <summary>
		/// Gets the unique business rule ID
		/// </summary>
		int Id
		{
			get;
		}

		/// <summary>
		/// Gets a value indicating whether the entity is valid regarding this business
		/// rule
		/// </summary>
		bool IsValid
		{
			get;
		}

		/// <summary>
		/// Gets an array containing the logical fields or properties involved in this
		/// business rule
		/// </summary>
		string[] LogicalFieldsInvolved
		{
			get;
		}

		/// <summary>
		/// Gets the name of the resource containing a message indicating rule invalidity
		/// </summary>
		string MessageResourceName
		{
			get;
		}
	}

}